public class ThreadJoin implements Runnable {
	   Cake cake;
	      Thread joinThread;
	         public void setJoinThread(Thread t) {
			       joinThread=t;
			          }
		    public void run() {
			          if(Thread.currentThread().getName().equals("顾客")) {
					            System.out.println(Thread.currentThread().getName()+"等待"+
								                                 joinThread.getName()+"制作生日蛋糕");
						              try{  joinThread.start();
								                      joinThread.join();             //当前线程开始等待joinThread结束
										                } 
							                catch(InterruptedException e){}
									          System.out.println(Thread.currentThread().getName()+
												                           "买了"+cake.name+" 价钱:"+cake.price);
										        }
				        else if(Thread.currentThread()==joinThread) {
						          System.out.println(joinThread.getName()+"开始制作生日蛋糕,请等...");
							            try { Thread.sleep(2000);    
									              }
								              catch(InterruptedException e){}
									                cake=new Cake("生日蛋糕",158) ;
											          System.out.println(joinThread.getName()+"制作完毕");
												        }
					   }   
		       class Cake {  //内部类
			            int price;
				         String name;
					      Cake(String name,int price) {
						             this.name=name;
							            this.price=price;
								         } 
					         }
}
